package com.sample.library.web;


import android.app.Activity;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import com.just.agentweb.AgentWeb;
import com.just.agentweb.DefaultWebClient;
import com.just.agentweb.IWebLayout;
import com.just.agentweb.WebChromeClient;
import com.just.agentweb.WebViewClient;
import com.sample.library.R;
import com.sample.library.widget.NestedScrollAgentWebView;



public class AgentWebHelper {


    // AgentWeb 没有把WebView的功能全面覆盖 ，
    // 所以某些设置 AgentWeb 没有提供 ， 请从WebView方面入手设置。

    //mAgentWeb.getWebCreator().getWebView()  获取WebView .
    //mAgentWeb.getWebCreator().getWebView().setOnLongClickListener();

    public static AgentWeb getAgentWeb(Activity activity, ViewGroup viewGroup, IWebLayout<NestedScrollAgentWebView, SwipeRefreshLayout> webLayout, String url,
                                       WebViewClient webViewClient, WebChromeClient webChromeClient) {

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        return AgentWeb.with(activity)
                .setAgentWebParent(viewGroup, -1, params)//传入AgentWeb的父控件。
                .useDefaultIndicator(-1, 2)//设置进度条颜色与高度，-1为默认值，高度为2，单位为dp。
                .setAgentWebWebSettings(new AgentWebSettings(activity))//设置 IAgentWebSettings。

                // 但是请勿获取WebView调用setWebViewClient(xx)方法了,会覆盖AgentWeb DefaultWebClient,同时相应的中间件也会失效。
                .setWebViewClient(webViewClient)//WebViewClient   与 WebView 使用一致 ，
                .setWebChromeClient(webChromeClient) //WebChromeClient

                .setPermissionInterceptor(new AgentWebInterceptor()) //权限拦截 2.0.0 加入。
                .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK) //严格模式 Android 4.2.2 以下会放弃注入对象 ，使用AgentWebView没影响。
                .setAgentWebUIController(new UIController(activity)) //自定义UI  AgentWeb3.0.0 加入。
                .setMainFrameErrorView(R.layout.agentweb_error_page, -1) //参数1是错误显示的布局，参数2点击刷新控件ID -1表示点击整个布局都刷新， AgentWeb 3.0.0 加入。
                //.additionalHttpHeader(getUrl(), "cookie", "41bc7ddf04a26b91803f6b11817a5a1c")

                .useMiddlewareWebChrome(new MiddlewareChromeClient()) //设置WebChromeClient中间件，支持多个WebChromeClient，AgentWeb 3.0.0 加入。
                .useMiddlewareWebClient(new MiddlewareWebViewClient()) //设置WebViewClient中间件，支持多个WebViewClient， AgentWeb 3.0.0 加入。

                .setWebLayout(webLayout)//设置WebLayout
                .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK)//打开其他页面时，弹窗质询用户前往其他应用 AgentWeb 3.0.0 加入。
                .interceptUnkownUrl() //拦截找不到相关页面的Url AgentWeb 3.0.0 加入。
                .createAgentWeb()//创建AgentWeb。
                .ready()//设置 WebSettings。
                .go(url); //WebView载入该url地址的页面并显示。
    }

    /**
     * 测试错误页的显示
     */
    protected void loadErrorWebSite(AgentWeb mAgentWeb) {
        if (mAgentWeb != null) {
            mAgentWeb.getUrlLoader().loadUrl("https://www.baidu.com/");
        }
    }

    /**
     * 清除 WebView 缓存
     */
    protected void toCleanWebCache(AgentWeb mAgentWeb) {

        if (mAgentWeb != null) {
            //清理所有跟WebView相关的缓存 ，数据库， 历史记录 等。
            mAgentWeb.clearWebCache();
            //清空所有 AgentWeb 硬盘缓存，包括 WebView 的缓存 , AgentWeb 下载的图片 ，视频 ，apk 等文件。
            //AgentWebConfig.clearDiskCache(this.getContext());
        }

    }


}
